import type { Options } from 'vue-draggable-plus'
import type { ListProps } from 'naive-ui'

import type { IconIconifyPropsType } from '@xtail/vue3'

export type DragSortListPropsType = {
  // 双向数据绑定
  modelValue?: Array<any>
  'update:modelValue'?: (value: Array<any>) => void
  // 列表项唯一标识
  itemKey?: (item: unknown, index: number) => number | string
  // 是否开启指定元素触发拖拽
  handle?: boolean
  // VueDraggable 组件 Props
  dragOptions?: Partial<Omit<Options, 'modelValue' | 'update:modelValue'>>
  // SIconIconify 组件 Props
  handleIconProps?: Partial<IconIconifyPropsType>
  // NList 组件 Props
  listProps?: Partial<ListProps>
}
